<!DOCTYPE html> 
<html>
<head>
<title>Skyline75489</title>
<meta charset='utf-8'>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<link rel="stylesheet" href="../static/styles/github.css">
<link rel="stylesheet" href="../static/post.css">
</head>
<body>

<div class="wrapper">
<div class="header">
	<span class="blog-name">Skyline75489</span>

<a class="nav" href="../index.html">Home</a>
<a class="nav" href="about.html">About</a>
</div>
<div class="content">

<h1>2016 HackPKU 参赛小记</h1>
<p>2016 年 4 月 8 日，我前往北京参加了人生中第一次黑客马拉松活动。</p>
<h4>0x00 概述</h4>
<p>我们的队伍成员有多次黑客马拉松经验的 <a href="https://www.zhihu.com/people/wxygeek">wxygeek</a>（江湖人称狗哥，<a href="http://blog.wxygeek.com/hack-the-world/">他的经历</a>），有留学澳洲的<a href="https://www.zhihu.com/people/zhao-guo-quan-78">铨哥</a>，有颜值爆表的<a href="https://www.zhihu.com/people/mac-turing">宝姐</a>，有颜值珠峰一般的<a href="https://www.zhihu.com/people/winlandiano">澜澜</a>（可惜澜澜由于临时有事，只参与了头脑风暴的部分，没有留下宝贵的皂片）。其中除了狗哥和宝姐之外，剩下的我们都没有参加过黑客马拉松的经验。我个人是抱着不坑队友 &amp; 体验生活的心态来参赛的。由于这是我第一次参加黑客马拉松活动（同时这也是北大第一次举办黑客马拉松活动），没办法做横向的对比，只能从我自己的角度对这次经历进行一个记录。</p>
<h4>0x01 开幕 &amp; 赞助商</h4>
<p>本次黑客马拉松的签到地点和开幕式地点没有设置在一起（其中签到的地点还是在地下一层），因为第一次来北大，对环境也不是很熟悉，幸亏有在北大上学的高中同学的指引，才比较顺利地找到了该去的地点。由于签到的人数比较多，像组织报销这种工作并没有像通知中说的在签到现场进行，而是延后了一些，现在看来这个决策是正确的，避免了更多的混乱。不过还是希望主办方以后能在通知上做到更加准确一些。</p>
<p>这次比赛的赞助商比较大牌的有 IBM，微软，搜狐，友盟等，其中有几个公司的代表在开幕式上进行了致辞。我感觉有些可惜的是，赞助商中缺少了诸如 Coding 这样知名的抱枕和杯子厂商，因此除了 T 恤之外也没有收获别的纪念品。</p>
<p>HackPKU 这次的奖项设置并没有在官网挂出来，在开幕式上都是很晚才提到。相比于其他 Hack 动辄上万的奖金，这届比赛的奖项设置稍显逊色，不过作为北大第一次筹办的比赛，能够做到这样也已经非常不容易了。</p>
<p><img src="../img/hackpku/1.jpg" alt="hackpku1"></p>
<h4>0x02 环境</h4>
<p>比赛的环境在新太阳活动中心的地下一层，在有 170 名参赛选手的情况下，现场的空间还是显得比较充足。除了工作区域之外，零食区和赞助商咨询区也都在同一个场地。不过比赛现场并没有提供休息区，也没有提供睡袋等，因此为了更好的休息，我们团队选择了住附近的宾馆。</p>
<p>在参赛之前我对于环境比较担心的就是两点，电和网。这次 HackPKU 提供了一个八口的大插线板，还是比较良心的，加上我自己带的一个备用插线板，用电的问题基本没有了。</p>
<p>这次主要有问题的是现场的网络。主办方没有提供单独的网络，而是使用了北大自己的无线网络，同时提供了上网账号。现场北大本校的同学可以使用自己的账号上网，而我们外校的同学不得不共享同一个账号。更坑爹的是，这个账号还有同时接入设备数量的限制，50 台设备的限制很容易就超出了。因此我们不得不使用分享网络等办法曲线上网。然而已有的网络连接也并不稳定，分享的网络更是不稳定上再加一层不稳定。在现场大概有一半左右的时间，我是在没有网的环境下工作的。碰到突然网络好使了，就抓紧时间把代码 push 上去，场面可谓凄惨。</p>
<p>因为网络的原因，我们选择住宾馆的决策显得更加明智了。比赛的两夜我们都在十二点之前就离开了比赛现场，回到宾馆继续战斗。</p>
<h4>0x03 饮食</h4>
<p>像我这种对于吃饭基本没什么要求的人来说，这次比赛的正餐和零食我都是比较满意的。正餐基本做到了准时发放，零食也基本做到了不限量随时取。正餐的话是真功夫提供的套餐，有几个不同的套餐可以选择，量上看不是特别大，不过一份不够还可以再去取。主办方本来是准备了餐票，后来提供的食物上是供大于求的，因此也没有再做什么限制。</p>
<p>零食方面基本是随时都有的，想拿一直都可以去拿，饮料方面也提供了红牛，咖啡这种帮助大家持续奋战的工具。不过我自己还是以吃正餐为主。总体上吃饭方面没有遇到什么问题。</p>
<h4>0x04 项目</h4>
<p>我们的项目叫做 Aviate，是一个多人实时在线音乐节奏类游戏。我们项目的特点是新颖的多人分屏协作游戏模式以及和 Kinect 结合的节奏输入功能。</p>
<p><img src="../img/hackpku/2.png" alt="aviate"></p>
<p>为了现场演示时的效果，我们制作了演示视频。其中一个是演示分屏游戏：</p>
<p><a href="http://v.youku.com/v_show/id_XMTUzMTg1MjIyOA==.html">http://v.youku.com/v_show/id_XMTUzMTg1MjIyOA==.html</a></p>
<p>另一个是铨哥身体力行，演示使用 Kinect 作为输入端，使用树莓派控制的 LED 灯给用户提供反馈，通过动作来创建节奏：</p>
<p><a href="http://v.youku.com/v_show/id_XMTUzMTg1MTA3Ng==.html?from=y1.2-1-105.3.1-1.1-1-1-0-0">http://v.youku.com/v_show/id_XMTUzMTg1MTA3Ng==.html?from=y1.2-1-105.3.1-1.1-1-1-0-0</a></p>
<p>整个项目从创意到实现到最后展示，并没有大家想象的那么一帆风顺，实际情况可谓是一波三折。</p>
<p>周五晚上开幕式结束之后，我们讨论比赛项目的方向。在创意阶段，我们经过了很长时间的头脑风暴，最终决定了做跨平台音乐游戏这个方向。由于我们队伍中大家都不是专业的前端开发，其中只有我和狗哥有写前端和 JavaScript 的经验，因此当时我们对于整个项目能否真正实现并不是特别有信心。</p>
<p>周六白天，我们对于项目所需要的技术进行探索，最终发现整体项目在实现上还是可行的，不至于难到做不了的程度。前端方面，狗哥和我通力合作，解决了几个关键性的 Bug 之后，前端的开发方向显得比较明朗了。后面狗哥开始专注前端开发，我自己则转向后端开发。为了方便协作，我选择了狗哥的主力技能点——Node 作为开发方向。</p>
<p>至于和 Kinect 以及树莓派结合的部分，更是很晚才最终确定方向。在游戏本身和硬件结合的部分上，我们为了做到有创意同时又要显得不生硬，进行了很多的思考和讨论，甚至一度考虑过放弃。不过大家最后还是坚持了下来，想出了一个足够好的创意。加上铨哥的 Kinect 开发经验和宝姐的硬件开发经验，实现方面我们也做出了比较好的效果。事实证明，Kinect 以及树莓派的结合对于整个项目来说是一个非常大的加分项。</p>
<p>周日上午的自由展示过程，评委对于我们的项目给出的基本都是正面评价，我们顺利地进入了前六名，得到了现场演示的机会。在现场演示的环节，我们做了很充分的准备。尽管现场网络出现了一些问题，我们仍然可以通过视频进行补救，加上狗哥高端大气的演讲，演示环节现场的反响很热烈，特别是 Kinect 和树莓派环节收获了很多的掌声。最终我们拿到了这次 HackPKU 的冠军。</p>
<p><img src="http://img.mp.itc.cn/upload/20160413/cbe96a2691a74a24aa8d50bc7f957b6c_th.jpg" alt="people"></p>
<p>（最左为大赛组织者赵秉坤大神，图侵删）</p>
<h4>0x05 评奖</h4>
<p>这次比赛的评奖总体还是比较客观公正的，进入前六名的项目都有自己独特的亮点。对于前三名的选择也可以看出评委们还是很用心的。</p>
<p>除了我们之外，剩下的前六名的项目分别是：</p>
<p><strong>FriendMachine</strong>：输入一张普通人的照片，通过图片处理，可以得到他高兴时的样子，生气时的样子等等。主要的难点在于图像处理的部分，为了在网页端进行展示，开发的同学还要把 C++ 代码翻译成 JS 代码，可见其难度和工作量。</p>
<p><strong>K-Link</strong>：这个项目是一个浏览器插件，可以让用户在浏览网页时，和其他浏览这个网页的人进行互动，进行评论乃至聊天等。主要的技术难点在于对网页上各种各类元素的识别。</p>
<p><strong>WarDrone</strong>：这是一个无人机+AR 结合起来的游戏项目，应该是现场最拉风的项目了。每次无人机一飞起来的展示，现场人们的注意力都会被吸引过去。至于游戏的部分则略显粗糙，团队成员据他们说也是第一次接触 Unity3D 开发，属于边学边做。</p>
<p><strong>Emotion-Diary</strong>：一个用于记录每天心情的 iOS App，用户拍摄自己的照片之后，软件会分析出心情，并且进行记录，生成长期的心情统计等。这个项目的完成度和美工水平都非常高，能在一天多的时间内做出来实属不易。</p>
<p><strong>Idoface</strong>：用于快速找到视频当中出现明星的位置，方便追星族定位和观赏。这个创意本身就已经很有亮点了，加上比较高的完整性和美工水平，形成了一个很不错的作品。</p>
<p>之后的前三名评选中，让我感觉评委用心的主要是 <a href="http://devpost.com/software/hackpku">K-Link</a> 这个项目。这个项目在我看来在创意，实用性和技术难度上都达到了一定水平。只是这个项目本身并不适合于演示。在自由展示环节我甚至都没有注意到有这个项目。在前六名的现场展示环节，K-Link 团队的两个程序员同学也表现的比较腼腆，展示效果并不理想，以至于我自己都没有感觉出这个项目的亮点。相信大部分现场同学跟我的感觉是差不多的。然而最终 K-Link 还是拿到了三等奖，打败了非常抓眼球的无人机游戏项目 WarDrone，以及完成度和展示水平都很高的 Emotion-Diary。这足以说明评委的评价标准并不单单限于演示效果的酷炫，技术和实用性上的水平也是考量的指标。</p>
<p>至于我们自己的项目，获奖主要靠是炫酷的创意+跨平台+软硬结合+一定的技术难度+比较高的完成度，这诸多方面的亮点结合到一起，形成了一个非常具有竞争力的项目，得到了评委的青睐。</p>
<h4>0x06 总结</h4>
<p>作为第一次参加黑客马拉松活动的我来说，这次经历简直不能更完美了。现在回忆起这 36 个小时的经历，仍然感觉不可思议 &amp; 难以置信。靠谱的队友 + 好玩的创意 + 曲折的经历 + 获奖的结果，我真的不知道还能要求什么了。总结一下这次的经验，我想到了下面几点：</p>
<ol>
<li>靠谱的队友很重要。我们的队伍有狗哥这样多次参加黑客马拉松经验的人作为领队，在很多地方给我们指引了正确的方向。同时我们所有人也都是典型的 doer，因此整个团队的产出效率非常之高，让项目达到了很高的完成度。可以说团队中少了任何一个人，整个项目都不会达到现在的水平。</li>
<li>选择方向的时候要考虑到团队成员的技术背景。因为我们几个人的技术方向差的比较远，找到一个共同的方向其实是很困难的。最终我们选择的 Web 端方向，一来是有两个人可以作为主力贡献代码，二来也提供了向其他方向扩展的能力。如果我们选择移动端开发的话，就会只有一个人能产出代码的情况。再或者贸然选择大家都不熟悉的方向，也会导致效率降低很多。</li>
<li>坚持很重要。虽然道理都被说烂了，但是坚持真的很重要。在短短的 36 个小时里碰到的困难层出不穷，不管是创意，编码，还是熬夜。最终我们还是坚持下来，走到了最后。在最后一天的展示环节，有一些团队直接就弃权了，我感觉是很可惜的。</li>
</ol>
<p>最后，感谢我靠谱的队友们，感谢北大，感谢赞助商，感谢王尧和赵秉坤两位同学组织了这样一场精彩的比赛，感谢所有为这届 HackPKU 做出贡献的同学，向你们致敬！</p>


</div>
</div>
<script src="../static/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</body>

</html>
